#ifndef DXINPUT_H
#define DXINPUT_H

#pragma comment (lib, "dinput8.lib")
#pragma comment (lib, "dxguid.lib")

#include <dinput.h>

#define LEFT_CLICK 0
#define RIGHT_CLICK 1
#define MIDDLE_CLICK 2

namespace DirectXFramework
{
	namespace Input
	{
		//Keyboard Class Declaration
		class GameKeyboard
		{
			public:
				//Constructors
				GameKeyboard (void);
				GameKeyboard (HINSTANCE hInstance, HWND hWnd);
				//Destructor
				~GameKeyboard (void);

				//Public Methods
				BOOL Init (HINSTANCE hInstance, HWND hWnd);
				void Update (void);
				BOOL IsKeyDown (DWORD Key);

			private:
				//Private Members
				LPDIRECTINPUT8 Interface;
				LPDIRECTINPUTDEVICE8 Keyboard;
				BYTE KeyStates[256];
		};

		typedef GameKeyboard* LPGAMEKEYBOARD;

		//Mouse Class Declaration
		class GameMouse
		{
			public:
				//Constructors
				GameMouse (void);
				GameMouse (HINSTANCE hInstance, HWND hWnd);
				//Destructor
				~GameMouse (void);

				//Public Methods
				BOOL Init (HINSTANCE hInstance, HWND hWnd);
				void Update (void);
				BOOL IsMouseClicked (DWORD Button);
				LONG GetMouseXChange (void);
				LONG GetMouseYChange (void);
				LONG GetMouseWheelChange (void);

			private:
				//Private Members
				LPDIRECTINPUT8 Interface;
				LPDIRECTINPUTDEVICE8 Mouse;
				DIMOUSESTATE MouseStates;
		};

		typedef GameMouse* LPGAMEMOUSE;
	};
};

#endif